Аннотации: практика
В этом уроке вы выполните два упражнения, которые помогут вам закрепить знания по аннотированию переменных и функций. Также вам нужно будет привести код в соответствие с PEP8.
Если тренажёр вдруг начнёт капризничать, воспользуйтесь шпаргалкой: в ней описано несколько простых лайфхаков, которые обычно помогают решить проблемы.
1.
Перед вами код модуля, который подсчитывает репутацию персонажа после поединка, но качество кода в этом модуле оставляет желать лучшего. Ваша задача — навести порядок в этом коде:
- проаннотировать переменные и функции,
- привести код в соответствие с PEP8.
Подсказка
- Чтобы разбить одну строчку на две и более, используйте скобки.
- Списки в Python 3.9 аннотируются вот так:
list[тип_элементов].
Код
xxxxxxxxxx99
print(start_training(char_name, char_class))1
# Тестовые данные.2
TEST_DATA = [3
(44, 'success', True),4
(16, 'failure', True),5
(4, 'success', False),6
(21, 'failure', False),7
]8
9
BONUS = 1.110
ANTIBONUS = 0.811
12
def add_rep(current_rep, rep_points, buf_effect):13
current_rep += rep_points14
if buf_effect:15
return current_rep * BONUS16
return current_rep17
18
def remove_rep(current_rep, rep_points, debuf_effect):19
current_rep -= rep_points20
if debuf_effect:21
return current_rep * ANTIBONUS22
return current_rep23
24
def main(duel_res):25
current_rep = 0.026
for rep, result, effect in duel_res:27
if result == 'success':28
current_rep = add_rep(current_rep, rep, effect)29
if result == 'failure':30
current_rep = remove_rep(current_rep, rep, effect)31
return f'После {len(duel_res)} поединков, репутация персонажа — {current_rep:.3f} очков.'32
33
34
# Тестовый вызов функции main.35
print(main(TEST_DATA))